// #include "compile_run.hpp"
// using namespace ns_compile_run;

// int main()
// {
//     std::string in_json;
//     Json::Value in_value;
//     in_value["code"]=R"(
//     #include <iostream>
//     using namespace std;
//     int main()
//     {
//         int a;
//         cin>>a;
//         cout<<a<<endl;
//         return 0;
//     })";
//     in_value["input"]="1";
//     in_value["cpu_limit"]=1;
//     in_value["memory_limit"]=102400;

//     //FastWriter构建原始字符串（无JSON格式），用于网络传输
//     Json::FastWriter writer;
//     in_json = writer.write(in_value);
//     std::cout<<"原始字符串：\n"<<in_json<<std::endl;

//     //Json::StyledWriter构建格式化字符串
//     std::string out_json;
//     //编译并运行
//     CompileAndRun::Start(in_json, &out_json);
//     std::cout<<"JSON字符串：\n"<<out_json<<std::endl;

//     return 0;
// }
#include "compile_run.hpp"
#include "../comm/httplib.h"

// 引入编译并运行模块
using namespace ns_compile_run;
// 引入网络服务模块
using namespace httplib;

void Usage(const std::string &proc)
{
    std::cout << "Usage: \n\t" << proc << " port" << std::endl;
}

int main(int argc,char *argv[])
{
    if (argc != 2)
    {
        Usage(argv[0]);
        return 1;
    }
    // 1. 创建 Server 对象
    Server svr;

    // 2. 注册响应处理
    //    当用户请求 "/compile_and_run" 时，执行对应的响应（编译并运行）
    svr.Post("/compile_and_run", [](const Request &req, Response &resp) {
        // 获取用户提交的代码
        std::string in_json = req.body;
        // 输出型参数：代码编译运行后的结果（状态码，描述，[标准输出，标准错误]）
        std::string out_json;
        if (!in_json.empty()) { // 请求体不为空
            // 调用编译并运行代码的函数
            CompileAndRun::Start(in_json, &out_json);
            // 返回编译运行结果
            resp.set_content(out_json, "application/json;charset=utf-8");
        }});
    // svr.Get("/hello", [](const Request &req, Response &resp) {
    //     resp.set_content("hello httplib", "text/plain;charset=utf-8;");
    // });
    // 3. 启动 http 服务
    svr.listen("0.0.0.0", atoi(argv[1]));
    return 0;
}
